package com.hxl.linuxfilemanager.controller;

import com.hxl.linuxfilemanager.entity.ErrorConstant;
import com.hxl.linuxfilemanager.entity.MessageConstant;
import com.hxl.linuxfilemanager.entity.R;
import com.hxl.linuxfilemanager.service.impl.FileServiceImpl;
import com.hxl.linuxfilemanager.util.ResponseUtils;
import com.hxl.linuxfilemanager.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.nio.file.Files;
import java.nio.file.Paths;

@RestController()
@RequestMapping("/api/file/")
public class FileManagerController {

    private Logger logger = LoggerFactory.getLogger(FileManagerController.class);
    @Autowired
    FileServiceImpl service;

    /**
     * 列举指定目录下的文件
     *
     * @param parentPath
     * @return
     */
    @GetMapping("/listFile")
    public R listFile(@RequestParam("parentPath") String parentPath) {
        return ResponseUtils.suceess(MessageConstant.OK, service.listFile(parentPath));
    }


    /**
     * 列举收藏的文件
     *
     * @return
     */
    @GetMapping("listMark")
    public R listMarkFile() {
        return ResponseUtils.suceess("OK", service.listMarkFile());
    }

    /**
     * 收藏指定文件
     *
     * @param path
     * @return
     */
    @PostMapping("mark")
    public R markFile(
            @RequestParam("mark") boolean mark,
            @RequestParam("file") String path) {
        if (StringUtils.isEmpty(path)) {
            return ResponseUtils.error(ErrorConstant.ERROR, "参数错误");
        }
        /**
         * 如果文件不存在
         */
        if (Files.notExists(Paths.get(path))) {
            return ResponseUtils.error(ErrorConstant.ERROR, "文件不存在");
        }
        logger.info("收藏文件{},{}", mark,path);

        String s = service.markFile(path, mark);
        if (s.equals("收藏成功") || s.equals("取消收藏成功")) {
            return ResponseUtils.suceess(s, "{}");
        }
        return ResponseUtils.error(ErrorConstant.ERROR, s);
    }

}
